Dynamicky linkovany balicek

Otázka od: bardon

29. 11. 2002 9:50

Zdravim.

Zkousel jsem v D5 pouzit dynamicky linkovany BPL. Funguje to dobre, ale jen
v pripade, kdy v Project/Options zapnu pouzivani balicku. Pokud vypnu
pouzivani balicku, tak to nefunguje.

Ja pri ladeni vetsinou kompiluju bez pouziti balicku, aby se mi projevovaly
i pripadne zmeny v komponentach, az definitivni build se dela s balicky.

Nevite prosim nekdo jak pri kompilaci nebo v runtime poznam, zda mam zapnuto
pouzivani balicku? Ja bych si podle toho udelal nejakou vyhybku a skusil
bych to vyresit tak aby to fungovalo v obou pripadech.

(Neni to az tak dulezite protoze mohu nechat build s balicky a pouzivat jen
originalni balicky do kterych nesaham a nedavat do seznamu sve balicky.
Nicmene bych stejne chtěl umet vyresit to univerzalne.)

Odpovedá: Ondrej Kelle

29. 11. 2002 10:17

> Zkousel jsem v D5 pouzit dynamicky linkovany BPL. Funguje to
> dobre, ale jen v pripade, kdy v Project/Options zapnu pouzivani
> balicku. Pokud vypnu pouzivani balicku, tak to nefunguje.

Presne tak, runtime balicky su "all or nothing". Ak ich chces pouzit, musis
tak skompilovat cely projekt.

> Ja pri ladeni vetsinou kompiluju bez pouziti balicku, aby se
> mi projevovaly i pripadne zmeny v komponentach, az definitivni
> build se dela s balicky.

Tie dve veci sa navzajom nevylucuju. Mozes si vytvorit project group, ktora
bude obsahovat okrem Tvojho projektu aj vsetky pozadovane balicky. Pred
ladenim potom Compile All alebo Build All.

> Nevite prosim nekdo jak pri kompilaci nebo v runtime poznam,
> zda mam zapnuto pouzivani balicku? Ja bych si podle toho
> udelal nejakou vyhybku a skusil bych to vyresit tak aby to
> fungovalo v obou pripadech.

Pri kompilacii to asi nezistis; v runtime snad pomocou napr.
GetModuleHandle('vcl50.bpl') ale to Ti aj tak nepomoze, pretoze ziadna
vyhybka neexistuje. Skratka musis kompilovat projekt s runtime balickami, ak
chces pouzivat runtime balicky.

HTH
TOndrej

Odpovedá: Petr Vones

29. 11. 2002 12:51

From: "bardon" <bardon@akord-soft.cz>
> Nevite prosim nekdo jak pri kompilaci nebo v runtime poznam, zda mam zapnuto
> pouzivani balicku? Ja bych si podle toho udelal nejakou vyhybku a skusil

Pri kompilaci tak ze to mas zaskrtle v Project | Options

V runtime pomoci funkce IsCompiledWithPackages v unitu JclSysUtils v JCL:
http://sourceforge.net/project/showfiles.php?group_id=47514&release_id=118195

V drtive vetsine pripadu je ti to jedno. Balicky jsou nativnim rozsirenim
prekladace, takze aplikace se chova stejne jak pri prekladu s balicky tak bez
nich.

Petr Vones